/*
 * shiftregister.h
 *
 * Created: 06.09.2011 19:22:20
 *  Author: halfmann
 */ 


#ifndef SHIFTREGISTER_H_
#define SHIFTREGISTER_H_

#include <avr/io.h>


#define SHIFTREGISTER_SER_PORT PORTC
#define SHIFTREGISTER_SCK_PORT PORTC
#define SHIFTREGISTER_RCK_PORT PORTC

#define SHIFTREGISTER_SER_DDR DDRC
#define SHIFTREGISTER_SCK_DDR DDRC
#define SHIFTREGISTER_RCK_DDR DDRC

#define SHIFTREGISTER_SER_PIN DDD2
#define SHIFTREGISTER_SCK_PIN DDD3
#define SHIFTREGISTER_RCK_PIN DDD4


/* 8 Bytes (64 Ports) */
#define SHIFTREGISTER_BYTES 8

/* Das Array, dessen Bytes ausgegeben werden. shiftregisterData[0] landet in dem Portexpander-IC, das direkt am Controller sitzt. Bit0 erscheint jeweils an Ausgang QA, Bit7 erscheint am Ausgang QH, etc. */
extern unsigned char shiftregisterData[];

/* Initialisiert die Schnittstelle bzw. die verwendeten Ports  */
extern void shiftregister_init (void);

/* Gibt die SHIFTREGISTER_BYTES Bytes aus dem Array shiftregisterData aus.  */
extern void shiftregister_out (void);
extern void shiftregister_out_alternate (volatile uint8_t inputData[]); //Gibt die 
extern void shiftregister_out_push_Data_to_output(void);

#endif /* SHIFTREGISTER_H_ */